函数基础知识
现在您已经了解了 move 的所有基础知识,让我们直接学习如何使用 move 中的函数。
函数定义
在 move 中,函数是执行发生的地方。您可以使用 fun
关键字定义函数。您可能已经注意到,构造函数也是使用 fun
关键字定义的。让我们看看如何在 move 中定义函数。
#![allow(unused)] fn main() { fun function_name() { // Function code goes here } }
这是编写函数的最简单方法,其中没有提到参数或返回类型。
模块中的函数
如您所知,我们将所有内容编写在 move 的模块内。现在,让我们通过一个示例来看看模块内部的结构。
#![allow(unused)] fn main() { module examples::example { fun add(num_1: u64, num_2: u64) { let sum = num_1 + num_2; } } }
在这里,我们没有返回,只是传递了参数并添加了它们。
函数参数
正如您所看到的,与所有其他编程语言一样,您可以将参数传递给函数。传递参数的格式为 variable_name: data_type
。您可以不向函数传递任何参数,也可以向函数传递多个参数。让我们看一下编码示例。
#![allow(unused)] fn main() { module examples::example { fun function_name(argument_1: u8, argument_2: u8) { // Function code goes here } } }
函数参数是在函数范围内定义的。当函数被销毁时,参数也会被销毁。以下是传递函数参数的基本语法指针。
- 多个参数使用逗号分隔。
- 所有参数都在括号内定义。
函数返回
由于我们都喜欢从函数返回值,move 也可以做到这一点。为了定义函数的返回类型,我们在括号外提及数据类型: fun fun_name(): data_type {}
。让我们看一下编码示例。
#![allow(unused)] fn main() { module examples::example { fun function_name(argument_1: u8, argument_2: u8): u8 { // Function code goes here } } }
现在,我们如何从函数返回一个值?为此,我们不需要 move 中的 return
关键字。我们只需编写一个表达式、一个变量名和一个返回任意值的函数名,函数末尾无需任何其他关键字。让我们看一下编码示例。
#![allow(unused)] fn main() { module math::math { fun sum(a: u8, b: u8): u8 { a + b } } }
这里, sum
函数返回 a + b
的值。让我们看另一个例子。
module examples::strings {
use sui::object::UID;
use sui::tx_context::{Self, TxContext};
// std::string import
use std::string::{Self, String};
// Declaring the Name
public struct Name has key {
id: UID,
name: String,
}
// Initializing the constructor
fun fill_name(name_bytes: vector<u8>, ctx: &mut TxContext): Name {
Name {
id: object::new(ctx),
name: string::utf8(name_bytes)
}
}
}
在本例中, fill_name
函数将返回一个对象 Name
。
小结
函数在任何编程语言中都发挥着重要作用。因此,了解每种编程语言如何使用函数非常重要。接下来,我们将探讨函数的可见性说明符,以涵盖在 move 中使用函数的高级主题